---
title: 'Controlled transaction'
---

# Controlled transaction

A controlled transaction allows you to commit and rollback manually, execute
savepoint commands, and queries in general.

In this example we start a transaction, use it to insert two rows and then commit
the transaction. If an error is thrown, we catch it and rollback the transaction.

import { Playground } from '../../../src/components/Playground'

import {
  controlledTransaction
} from './0011-controlled-transaction'

<div style={{ marginBottom: '1em' }}>
  <Playground code={controlledTransaction} />
</div>

:::info[More examples]
The API documentation is packed with examples. The API docs are hosted [here](https://kysely-org.github.io/kysely-apidoc/),
but you can access the same documentation by hovering over functions/methods/classes in your IDE. The examples are always
just one hover away!

For example, check out these sections:
 - [transaction method](https://kysely-org.github.io/kysely-apidoc/classes/Kysely.html#transaction)
:::
